//
//  Sequencer.h
//  CocoaSynth
//
//  Created by Jérémy Brault on 06/02/10.
//  Copyright 2010 None. All rights reserved.
//

#import <Cocoa/Cocoa.h>

#import "SequencerProtocol.h"
#import "System.h"

/*!
    @class			Sequencer 
    @superclass		NSObject <SequencerProtocol>
    @abstract		Sequencer is an implementation of SequencerProtocol acting as the system's clock, configured with a given frequency. At each top
					of clock, two operations are launched. The clock first asks all modules to read the incoming data and then asks these modules
					to write the transformed data.
    @discussion		Sequencer has real-time considerations so that the addition or the removal of any module does not affect the system's working.
*/
@interface Sequencer : NSObject <SequencerProtocol> {
	BOOL isStarted;
	NSMutableSet* modules;
	NSOperationQueue* operationQueue;
}

@property (nonatomic, assign) BOOL isStarted;
@property (nonatomic, retain) NSMutableSet* modules;
@property (readonly) NSOperationQueue* operationQueue;

@end
